神仙题
题意:给一个数组建完全$k$叉树,$k$范围$[1,n-1]$,问每个$k$对应的不满足最小堆性质的结点个数
暴力$n^2$肯定要$T$飞,这里先引入几个性质:
$1.\frac{n}{1}+\frac{n}{2}+\frac{n}{3}+…+\frac{n}{n-1}+\frac{n}{n}=nlogn$(调和级数)
2.在$i$叉树中,一个节点$j$的儿子的范围一定是一段区间$(j×i-i+2)$~$(j×i+1)$
接下来是正解,我们发现对于一个节点$x$,它儿子中所有不合法的节点数即是它儿子中权值小于$x$的权值的数量,这显然可以联想到树状数组求逆序对的思想。
先排一遍序,记录下第i小的数在原先序列中的位置。然后从小的数开始处理,小的数后面肯定是大的数,不可能会出现非法节点,然后处理完小的数之后维护树状数组,对小的数对应的权值单点修改$+1$,这样在后面处理大的数的时候询问就会算上这些更新后的权值了。
1 |
|